package com.bird.file.switchStream;

import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * @author sijunqiang
 * @data 2021/8/1 13:11
 * @description: 转换输入流 可以指定编码读取字符文件. 读取字节,并使用指定的字符集将其解码为字符。它是从字节流到字符流的桥梁。
 * 执行流程：
 * 1：先读取文件的中的数据 到输入流中
 * 2：再根据指定的字符集进行解码
 */
public class InputStreamReader {
    //InputStreamReader(InputStream in)  创建一个使用系统默认字符集的字符流。 IDEA默认使用UTF-8
    //InputStreamReader(InputStream in, String charsetName): 创建一个指定字符集的字符流。


    // 创建一个字节读取流对象 并指定编码的方式进行读取文件数据
    public static void main(String[] args) throws IOException {

        //创建一个字节转换读取流对象 并指定读取的数据以utf-8的字符集 进行编码
        String path = "D:\\file\\bbb.txt";
        java.io.InputStreamReader isr = new java.io.InputStreamReader(new FileInputStream(path), StandardCharsets.UTF_8);

        //定义变量 保存从字节流读取的数据
        int read;
        while ((read = isr.read()) != -1) {
            System.out.print((char) read);
        }
        isr.close();
    }
}
